<?php

class PedidoController extends AweController {

    /**
     * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
     * using two-column layout. See 'protected/views/layouts/column2.php'.
     */
    public $layout = '//layouts/column2';
    public $defaultAction = 'admin';

    public function filters() {
        return array(
            array('CrugeAccessControlFilter'),
        );
    }

    /**
     * Displays a particular model.
     * @param integer $id the ID of the model to be displayed
     */
    public function actionView($id) {
        $pedidoMenu = new PedidoMenu;
        $this->render('view', array(
            'model' => $this->loadModel($id),
            'pedidoMenu' => $pedidoMenu,
        ));
    }

    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     */
    public function actionCreate() {
        $this->layout = '//layouts/caja';
        $model = new Pedido;
        $model->fecha = date('Y/m/d H:i:s');
        $model->empleado_id = Util::obtenerIdEmpleado();
        $secciones = MenuSeccion::model()->findAll();
        $menus = Menu::model()->findAll();
        $mensaje = false;
        $this->performAjaxValidation($model, 'pedido-form');
        if ($this->actionComprobarAccesoCaja()) {
//        if (true)
            if (isset($_POST['Pedido'])) {

                $model->attributes = $_POST['Pedido'];
//                        $model->ticket_id=;
                if (!($_POST['Pedido']['reservacion'] == 1)) {

                    $model->fecha = date('Y/m/d H:i:s');
                } else {
                    $model->fecha = date('Y/m/d H:i:s', strtotime('+1 month'));
                    $model->estado = 'ANULADO';
                }


                $model->empleado_id = Util::obtenerIdEmpleado();
//                       $model->validate();


                if (isset($_POST['menu_producto'])) {
                    if ($model->save()) {

                        if ($model->facturacion == 1 && isset($_POST['Pedido']['numeroFactura'])) {
                            $factura = new Factura;
                            $factura->numero = $_POST['Pedido']['numeroFactura'];
                            $factura->pedido_id = $model->id;
                            $factura->persona_id=$_POST['Pedido']['persona'];
                            $factura->save();
                        }
                        $ticket = Ticket::model()->findByPk($model->ticket_id);
                        $ticket->estado = "OCUPADO";
                        $ticket->save();
                        foreach ($_POST['menu_producto'] as $menu) {

                            $menu_producto = new PedidoMenu;
                            $menu_producto->attributes = $menu;
                            $menu_producto->pedido_id = $model->id;
                            $menu_producto->estado = PedidoMenu::ESTADO_ABIERTO;

                            if ($menu_producto->save()) {

                                $this->actionRestarPedidoMenu($menu_producto->id, $menu_producto->cantidad);
                            }
                        }

                        Yii::app()->user->setFlash('success', "Pedido creado con exito.");

                        $this->redirect('create');

//                $this->redirect(array('create'),array('mensaje'=>$mensaje));
//                $this->redirect(array('view', 'id' => $model->id));
                    }
                } else {
                    $model->persona=$_POST['Pedido']['persona'];
                    Yii::app()->user->setFlash('error', "El pedido esta vacio.");
                }
            }

            $this->render('create', array(
                'model' => $model,
                'secciones' => $secciones,
                'menus' => $menus,
                'mensaje' => $mensaje,
            ));
        } else {

            $this->redirect(Yii::app()->createUrl('/site/index'));
        }
    }

    /**
     * Updates a particular model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id the ID of the model to be updated
     */
    public function actionUpdate($id) {
        $model = $this->loadModel($id);

        $this->performAjaxValidation($model, 'pedido-form');

        if (isset($_POST['Pedido'])) {
            $model->attributes = $_POST['Pedido'];
            if ($model->save()) {
                $this->redirect(array('view', 'id' => $model->id));
            }
        }

        $this->render('update', array(
            'model' => $model,
        ));
    }

    /**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'admin' page.
     * @param integer $id the ID of the model to be deleted
     */
    public function actionDelete($id) {
        if (Yii::app()->request->isPostRequest) {
            // we only allow deletion via POST request
//            $this->loadModel($id)->delete();
            $model = $this->loadModel($id);
            $model->estado_pedido = Pedido::ESTADO_INACTIVO;
            $model->numeroFactura = 1;
            $model->save();
            var_dump($model->attributes);
            die();


            // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
            if (!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    /**
     * Lists all models.
     */
    public function actionIndex() {
        $dataProvider = new CActiveDataProvider('Pedido');
        $this->render('index', array(
            'dataProvider' => $dataProvider,
        ));
    }

    /**
     * Manages all models.
     */
    public function actionAdmin() {
        $model = new Pedido('search');
        $model->unsetAttributes(); // clear any default values
        if (isset($_GET['Pedido']))
            $model->attributes = $_GET['Pedido'];

        $this->render('admin', array(
            'model' => $model,
        ));
    }

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     * @param integer the ID of the model to be loaded
     */
    public function loadModel($id, $modelClass = __CLASS__) {
        $model = Pedido::model()->findByPk($id);
        if ($model === null)
            throw new CHttpException(404, 'The requested page does not exist.');
        return $model;
    }

    /**
     * Performs the AJAX validation.
     * @param CModel the model to be validated
     */
    protected function performAjaxValidation($model, $form = null) {
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'pedido-form') {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
    }

    public function actionHistorialPedidos() {
//        $this->admin = true;
        $model = new Pedido('search');
        $model->fechas = date('01/m/Y') . ' - ' . Util::obtenerUltimoDiaMes() . date("/m/Y");
        $model->unsetAttributes();
        if (isset($_GET['search'])) {
            if (!empty($_GET['search']['value'])) {
                $n = explode(' - ', $_GET['search']['value']);
                $model->date_first = $n['0'];
                $model->date_last = $n['1'];
            }
        }
        $this->render('historial', array(
            'model' => $model,
        ));
    }

    public function actionGanancias() {
//        $this->admin = true;
        $model = new Pedido('search');
        $model->fechas = date('01/m/Y') . ' - ' . Util::obtenerUltimoDiaMes() . date("/m/Y");
        $model->unsetAttributes();
        if (isset($_GET['search'])) {
            if (!empty($_GET['search']['value'])) {
                $n = explode(' - ', $_GET['search']['value']);
                $model->date_first = $n['0'];
                $model->date_last = $n['1'];
            }
        }
        $this->render('historial_ganancias', array(
            'model' => $model,
        ));
    }

    public function actionExportarHistorial($venta_id = null, $fechas = null) {
        $datos = array();
        $facturas = array();
        $model = new Pedido('search');
        $model->unsetAttributes(); // clear any default values
        //para generar excel desde historial_por_entidad
//        die();
        if ($_POST['Factura'] == 'todos') {
            if ($fechas != null || $fechas != '') {
                $fechas = explode(' - ', $fechas);
                $model->date_first = $fechas[0];
                $model->date_last = $fechas[1];
                $facturas = $model->de_rango($model->date_first, $model->date_last);
//                 var_dump($facturas);
            }

            $facturas = $facturas->findAll();
//             var_dump($facturas);
//            die();
//            die();
        } else {

//            Coloca en $data solo los id de los formularios  seleccionadas
            $registros = explode(',', $_POST['Factura']);
            foreach ($registros as $registro_id) {
                $datos = $model->findByPk($registro_id);


                array_push($facturas, $datos);
            }
        }

//        $grid = $model->obtenerPreguntas($idformulario);
//        $preguntas = $model->obtenerPreguntas($idformulario);
//         var_dump($preguntas);
//            die();
        if (!empty($facturas)) {
            $objExcel = new PHPExcel();
            $objExcel->setActiveSheetIndex(0) // Titulo del reporte
                    ->setCellValue('A1', 'EMPLEADO')  //Titulo de las columnas
                    ->setCellValue('B1', 'FECHA')
                    ->setCellValue('C1', 'TICKET')
                    ->setCellValue('D1', 'TOTAL')
                    ->setCellValue('E1', 'ESTADO')

            ;
            //Devuelve la ultima columna utilizada en este caso la F
//            $lastColumn = $objExcel->getActiveSheet()->getHighestColumn();
//            $lastTitles = $lastColumn;
//            foreach ($grid as $col) {
//                //va iterando desde la E,F,G...n en la fila 1 ($head)
//                $lastTitles++;
//                $objExcel->setActiveSheetIndex(0)->setCellValue($lastTitles . '1', $col['label']);
//            }
            $id = 2;
            foreach ($facturas as $data) {
//                $factura = Factura::model()->findAllByPk($data);
//                foreach ($data as $value) {
//                    $user = Yii::app()->user->um->loadUserById($value->usuario_creacion_id)->username;
                $objExcel->setActiveSheetIndex(0)
                        ->setCellValue('A' . $id, $data->empleado->nombre_completo)
                        ->setCellValue('B' . $id, $data->fecha)  //Titulo de las columnas
                        ->setCellValue('C' . $id, $data->ticket->numero)
                        ->setCellValue('D' . $id, $data->valor_total)
                        ->setCellValue('E' . $id, $data->estado)
//                            ->setCellValue('D' . $id, $value->motivo->nombre)
                ;
                $id++;
//                }
            }

            $styleArray = array(
                'borders' => array(
                    'allborders' => array(
                        'style' => PHPExcel_Style_Border::BORDER_HAIR,
                        'color' => array('argb' => '000000'),
                    ),
                ),
            );

            for ($i = 'A'; $i <= 'F'; $i++) {
                $objExcel->setActiveSheetIndex(0)->getColumnDimension($i)->setAutoSize(TRUE);
            }
//            $objExcel->getActiveSheet()->getStyle('A1:' . $lastContent . --$id)->applyFromArray($styleArray);

            $objExcel->getActiveSheet()->setTitle('Reporte Facturas');
//       Se activa la hoja para que sea la que se muestre cuando el archivo se abre
            $objExcel->setActiveSheetIndex(0);
//            for ($i = 'A'; $i <= $lastContent; $i++) {
//                $objExcel->setActiveSheetIndex(0)->getColumnDimension($i)->setAutoSize(TRUE);
//            }
////// Inmovilizar paneles
            $objExcel->getActiveSheet(0)->freezePaneByColumnAndRow(1, 2);
//        // Se manda el archivo al navegador web, con el nombre que se indica, en formato 2007
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="Reporte Facturas.xlsx"');
            header('Cache-Control: max-age=0');

            $objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
            $objWriter->save('php://output');
            exit;
        }
    }

    public function actionExportarHistorialGanancias($venta_id = null, $fechas = null) {
//        var_dump($_POST);
//        die('entro');
        $datos = array();
        $facturas = array();
        $model = new Pedido('search');
        $model->unsetAttributes(); // clear any default values
        //para generar excel desde historial_por_entidad
//        die();
        if ($_POST['Factura'] == 'todos') {
            if ($fechas != null || $fechas != '') {
                $fechas = explode(' - ', $fechas);
                $model->date_first = $fechas[0];
                $model->date_last = $fechas[1];
                $facturas = $model->efectivos()->de_rango($model->date_first, $model->date_last);
//                 var_dump($facturas);
            }

            $facturas = $facturas->ordenDescendente()->findAll();
//             var_dump($facturas);
//            die();
//            die();
        } else {

//            Coloca en $data solo los id de los formularios  seleccionadas
            $registros = explode(',', $_POST['Factura']);
            foreach ($registros as $registro_id) {
                $datos = $model->findByPk($registro_id);


                array_push($facturas, $datos);
            }
        }

        if (!empty($facturas)) {
            $objExcel = new PHPExcel();
            $objExcel->setActiveSheetIndex(0) // Titulo del reporte
                    ->setCellValue('A1', 'EMPLEADO')  //Titulo de las columnas
                    ->setCellValue('B1', 'FECHA')
                    ->setCellValue('C1', 'TICKET')
                    ->setCellValue('D1', 'TOTAL')
                    ->setCellValue('E1', 'COSTO TOTAL')
                    ->setCellValue('F1', 'GANACIAS')
//                    ->setCellValue('G1', 'ESTADO')

            ;
            $id = 2;
            foreach ($facturas as $data) {
                $objExcel->setActiveSheetIndex(0)
                        ->setCellValue('A' . $id, $data->empleado->nombre_completo)
                        ->setCellValue('B' . $id, $data->fecha)  //Titulo de las columnas
                        ->setCellValue('C' . $id, $data->ticket->numero)
                        ->setCellValue('D' . $id, number_format($data->valor_total, 2))
                        ->setCellValue('E' . $id, $data->obtenerPrecioCostoPedido())
                        ->setCellValue('F' . $id, ($data->valor_total - $data->obtenerPrecioCostoPedido()));
                $id++;
//                }
            }

            $styleArray = array(
                'borders' => array(
                    'allborders' => array(
                        'style' => PHPExcel_Style_Border::BORDER_HAIR,
                        'color' => array('argb' => '000000'),
                    ),
                ),
            );

            for ($i = 'A'; $i <= 'H'; $i++) {
                $objExcel->setActiveSheetIndex(0)->getColumnDimension($i)->setAutoSize(TRUE);
            }
//            $objExcel->getActiveSheet()->getStyle('A1:' . $lastContent . --$id)->applyFromArray($styleArray);

            $objExcel->getActiveSheet()->setTitle('Reporte Ganancias');
//       Se activa la hoja para que sea la que se muestre cuando el archivo se abre
            $objExcel->setActiveSheetIndex(0);
//            for ($i = 'A'; $i <= $lastContent; $i++) {
//                $objExcel->setActiveSheetIndex(0)->getColumnDimension($i)->setAutoSize(TRUE);
//            }
////// Inmovilizar paneles
            $objExcel->getActiveSheet(0)->freezePaneByColumnAndRow(1, 2);
//        // Se manda el archivo al navegador web, con el nombre que se indica, en formato 2007
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="Reporte Ganancias.xlsx"');
            header('Cache-Control: max-age=0');

            $objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
            $objWriter->save('php://output');
            exit;
        }
    }

    public function actionHistorialPedidosEmpleados() {
//        $this->admin = true;
        $model = new Pedido('search');
        $model->fechas = date('01/m/Y') . ' - ' . Util::obtenerUltimoDiaMes() . date("/m/Y");
        $model->unsetAttributes();
        if (isset($_GET['search'])) {
            if (!empty($_GET['search']['value'])) {
                $n = explode(' - ', $_GET['search']['value']);
                $model->date_first = $n['0'];
                $model->date_last = $n['1'];
            }
        }
        $this->render('historial_empleados', array(
            'model' => $model,
        ));
    }

    public function actionBuscarMenu($id) {
        $menu = Menu::model()->findByPk($id);
        echo CJSON::encode($menu);
    }

    public function actionBuscarPedidoMenu($id) {
        $menu = PedidoMenu::model()->findByPk($id);
        $result = array();
        if ($menu->estado == PedidoMenu::ESTADO_ABIERTO) {
            $menu->estado = PedidoMenu::ESTADO_PREPARACION;
            $result['class'] = PedidoMenu::ESTADO_PREPARACION;
        } elseif ($menu->estado == PedidoMenu::ESTADO_PREPARACION) {
            $menu->estado = PedidoMenu::ESTADO_TERMINADO;
            $result['class'] = PedidoMenu::ESTADO_TERMINADO;
        } elseif ($menu->estado == PedidoMenu::ESTADO_TERMINADO) {
//            $result['']
        }
        $menu->save();
        $result['data'] = $menu->attributes;
        echo CJSON::encode($result);
    }

    public function actionCocina() {



        $this->layout = '//layouts/cocina';
        $inicio = date('Y/m/d 00:00:00');
        $fin = date('Y/m/d H:i:s');

        $pedidosPendientes = Pedido::model()->findAll(array('condition' => 'estado=:estado AND fecha BETWEEN :inicio AND :fin',
            'params' => array(':estado' => 'ABIERTO', ':inicio' => $inicio, ':fin' => $fin)));




        $this->render('_cocina', array('pedidosPendientes' => $pedidosPendientes
        ));
    }

    public function actionAjaxCocina() {


        $this->layout = '//layouts/caja';
        $inicio = date('Y/m/d 00:00:00');
        $fin = date('Y/m/d H:i:s');

        $pedidosPendientes = Pedido::model()->findAll(array('condition' => 'estado=:estado AND fecha BETWEEN :inicio AND :fin',
            'params' => array(':estado' => 'ABIERTO', ':inicio' => $inicio, ':fin' => $fin)));

        if (Yii::app()->request->isAjaxRequest) {
            $this->renderPartial('_pedidosPendientes', array('pedidosPendientes' => $pedidosPendientes), false, false);
        }
    }

    public function actionAjaxPedidosPendienteCaja() {


        $this->layout = '//layouts/caja';
        $inicio = date('Y/m/d 00:00:00');
        $fin = date('Y/m/d H:i:s');

        $pedidosPendientes = Pedido::model()->findAll(array('condition' => 'estado=:estado AND fecha BETWEEN :inicio AND :fin',
            'params' => array(':estado' => 'ABIERTO', ':inicio' => $inicio, ':fin' => $fin)));

//         if (Yii::app()->request->isAjaxRequest) {
        $this->renderPartial('_pedidosPendientesModal', array('pedidosPendientes' => $pedidosPendientes), false, true);
//        }
    }

    public function actionAjaxPedidosNoPagadosCaja() {


        $this->layout = '//layouts/caja';
        $inicio = date('Y/m/d 00:00:00');
        $fin = date('Y/m/d H:i:s');
        $model = new Pedido('search');
        $model->unsetAttributes();

//        $pedidosPendientes = Pedido::model()->findAll(array('condition' => 'estado_pago=:estado_pago AND fecha BETWEEN :inicio AND :fin',
//            'params' => array(':estado_pago' => 1, ':inicio' => $inicio, ':fin' => $fin)));
//         if (Yii::app()->request->isAjaxRequest) {
        $this->renderPartial('_pedidosNoPagados', array('model' => $model), false, true);
//        }
    }

    public function actionAjaxPedidosReservadosCaja() {


        $this->layout = '//layouts/caja';
        $inicio = date('Y/m/d 00:00:00');
        $fin = date('Y/m/d H:i:s');
        $model = new Pedido('search');
        $model->unsetAttributes();

//        $pedidosPendientes = Pedido::model()->findAll(array('condition' => 'estado_pago=:estado_pago AND fecha BETWEEN :inicio AND :fin',
//            'params' => array(':estado_pago' => 1, ':inicio' => $inicio, ':fin' => $fin)));
//         if (Yii::app()->request->isAjaxRequest) {
        $this->renderPartial('_pedidosReservados', array('model' => $model), false, true);
//        }
    }

    public function actionAjaxPagarPedido($id) {

        $pedido = $this->loadModel($id);
        $pedido->numeroFactura = 1;
        $pedido->estado_pago = 0;
        if ($pedido->save()) {
            $result['success'] = true;
        } else {
            $result['success'] = false;
        }
        echo CJSON::encode($result);
    }

    public function actionAjaxPrepararPedidoReservado($id) {

        $pedido = $this->loadModel($id);
        $pedido->numeroFactura = 1;
        $pedido->fecha = date('Y-m-d H:i:s');
        $pedido->estado = 'ABIERTO';
//        $pedido->estado_pago = 0;



        if ($pedido->save()) {
            $result['success'] = true;
        } else {
            $result['success'] = false;
        }
        echo CJSON::encode($result);
    }

    public function actionCocina2() {



        $this->layout = '//layouts/caja';
        $inicio = date('Y/m/d 00:00:00');
        $fin = date('Y/m/d H:i:s');

        $pedidosPendientes = Pedido::model()->findAll(array('condition' => 'estado=:estado AND fecha BETWEEN :inicio AND :fin',
            'params' => array(':estado' => 'ABIERTO', ':inicio' => $inicio, ':fin' => $fin)));




        $this->render('_cocina', array('pedidosPendientes' => $pedidosPendientes
        ));
    }

    public function actionAjaxFinalizarPedido($pedido_id) {


        $pedido = Pedido::model()->findByPk($pedido_id);
        if ($pedido) {

            $pedido->estado = 'CERRADO';
            $ticket = $pedido->ticket;
            $ticket->estado = Ticket::ESTADO_LIBRE;
            $ticket->save();
            foreach ($pedido->pedidoMenus as $value) {
                $value->estado = 'TERMINADO';
                $value->save();
            }
            if ($pedido->save()) {
                
            } else {
//              $pedido->validate();
//              var_dump($pedido->errors);
            }

            if ($pedido->facturacion == 1) {

                if ($pedido->facturas) {
                    $pedido->numeroFactura = $pedido->facturas[0]['numero'];
                } else {
                    $pedido->numeroFactura = 1;
                }
            }
            $pedido->save();
        }
    }

    public function actionAjaxCancelarPedido($pedido_id) {
        $estado;

        $pedido = Pedido::model()->findByPk($pedido_id);
        if ($pedido) {

            $pedido->estado = 'ANULADO';
            $ticket = $pedido->ticket;
            $ticket->estado = Ticket::ESTADO_LIBRE;
            $ticket->save();
            if ($pedido->facturacion == 1) {

                if ($pedido->facturas) {
                    $pedido->numeroFactura = $pedido->facturas[0]['numero'];
                } else {
                    $pedido->numeroFactura = 1;
                }
            }
            if ($pedido->save()) {
                foreach ($pedido->pedidoMenus as $value) {
                    $estado = $value->estado;

                    $value->estado = 'ANULADO';
                    $value->save();
                    if ($estado != 'ANULADO') {
                        $this->actionSumarPedidoMenu($value->id);
                    }
                }
                $result['success'] = true;
            } else {
                $result['success'] = false;
            }
            echo CJSON::encode($result);
        }
    }

    public function actionAjaxCancelarMenuPedido($pedido_menu_id) {

        $pedidoMenu = PedidoMenu::model()->findByPk($pedido_menu_id);
        if ($pedidoMenu) {
            if ($pedidoMenu->estado != PedidoMenu::ESTADO_PREPARACION && $pedidoMenu->estado != PedidoMenu::ESTADO_TERMINADO && $pedidoMenu->estado != 'ANULADO') {
                $pedidoMenu->estado = 'ANULADO';
//                if (true) {
                if ($pedidoMenu->save()) {
                    $this->actionSumarPedidoMenu($pedido_menu_id);
                    $result['success'] = true;
                } else {
                    $result['success'] = false;
                }
            } else {
                $result['success'] = false;
                $result['error'] = 'pedidoMenu';
            }


            echo CJSON::encode($result);
        }
    }

    public function actionRestarPedidoMenu($pedido_menu_id, $cantidad) {
        $pedidoMenu = PedidoMenu::model()->findByPk($pedido_menu_id);
        $valor = $pedidoMenu->menu->precio;
        $pedido = $this->loadModel($pedidoMenu->pedido_id);
//        $pedido->valor_total = $pedido->valor_total - $valor;
        if ($pedido->facturacion) {
            $pedido->numeroFactura = 1;
        }
//        $pedido->save();
        $productosMenu = MenuProducto::model()->findAll(array('condition' => 'menu_id=:menu_id', 'params' => array(':menu_id' => $pedidoMenu->menu->id)));
        foreach ($productosMenu as $value) {
            $producto = $value->producto;
            $cantidadTotal = doubleval($producto->cantidad) - (doubleval($value->cantidad) * doubleval($cantidad));
            $producto->cantidad = $cantidadTotal;

            if ($producto->cantidad < 0) {
                $producto->cantidad = 0;
            }

            $producto->save();
        }
    }

    public function actionSumarPedidoMenu($pedido_menu_id) {
        $total = 0;
        $pedidoMenu = PedidoMenu::model()->findByPk($pedido_menu_id);
        $valor = $pedidoMenu->menu->precio;
        $pedido = $this->loadModel($pedidoMenu->pedido_id);
        $pedido->valor_total = $pedido->valor_total - ($valor * $pedidoMenu->cantidad);
        if ($pedido->facturacion) {
            $pedido->numeroFactura = 1;
        }

        $pedido->save();
//        $pedidoMenu->estado="ANULADO";
        $productosMenu = MenuProducto::model()->findAll(array('condition' => 'menu_id=:menu_id', 'params' => array(':menu_id' => $pedidoMenu->menu->id)));
//          var_dump($productosMenu);
        foreach ($productosMenu as $value) {

            $producto = $value->producto;
            $producto->cantidad = $producto->cantidad + ($value->cantidad * $pedidoMenu->cantidad);
//            if ($producto->cantidad < 0) {
//                $producto->cantidad = 0;
//            }

            $producto->save();
        }
    }

    public function actionAjaxCambiarEstadoTicket($id) {


        $ticket = Ticket::model()->findByPk($id);

        $ticket->estado = Ticket::ESTADO_LIBRE;
        $ticket->save();
    }

    public function actionAccesoCaja() {
        $result = array();
        $inicio = date('Y-m-d 00:00:00');
        $fin = date('Y-m-d H:i:s');
        $cierreCaja = CierreCaja::model()->de_empleado(Util::obtenerIdEmpleado())->find(array('condition' => 'fecha_cierre is null AND fecha_inicio between :inicio and :fin', 'params' => array(':inicio' => $inicio, ':fin' => $fin)));
        if (!Util::obtenerIdEmpleado()) {
            $result['error'] = true;
        }
        if ($cierreCaja) {
            $result['success'] = true;
        } else {
            $result['success'] = false;
        }
        echo CJSON::encode($result);
    }

    public function actionComprobarAccesoCaja() {
        $result = array();
        $inicio = date('Y-m-d 00:00:00');
        $fin = date('Y-m-d H:i:s');
        $cierreCaja = CierreCaja::model()->de_empleado(Util::obtenerIdEmpleado())->find(array('condition' => 'fecha_cierre is null AND fecha_inicio between :inicio and :fin', 'params' => array(':inicio' => $inicio, ':fin' => $fin)));
//       if(!$cierreCaja){
        $this->actionComprobarAccesoCajaDiaAnterior();

//       }
        if ($cierreCaja) {
            return true;
        } else {
            return false;
        }
    }

    public function actionComprobarAccesoCajaDiaAnterior() {
        $result = array();
        $inicio = date('Y-m-d 00:00:00', strtotime('-3 day'));
        $fin = date('Y-m-d 00:00:00');

        $cierreCaja = CierreCaja::model()->de_empleado(Util::obtenerIdEmpleado())->find(array('condition' => 'fecha_cierre is null AND fecha_inicio between :inicio and :fin', 'params' => array(':inicio' => $inicio, ':fin' => $fin)));

        if ($cierreCaja) {
            $this->actionCerrarCajaDiaAnterior($inicio);
            return true;
        } else {
            return false;
        }
    }

    public function actionCerrarCaja($inicio = null) {
        $result = array();
        if (!$inicio) {
            $inicio = date('Y-m-d 00:00:00');
        }
        $fin = date('Y-m-d H:i:s');
        $cierreCaja = CierreCaja::model()->de_empleado(Util::obtenerIdEmpleado())->find(array('condition' => 'fecha_cierre is null AND fecha_inicio between :inicio and :fin', 'params' => array(':inicio' => $inicio, ':fin' => $fin)));
        if ($cierreCaja) {
            $cierreCaja->fecha_cierre = $fin;
            $total = Pedido::model()->cierreCajaEmpleado($cierreCaja);
            $cierreCaja->total_ventas = doubleval($total);
            $cierreCaja->total = doubleval($total) + $cierreCaja->valor_apertura;
            if ($cierreCaja->save()) {
//        if ($cierreCaja)
                $result['success'] = true;
            } else {
                $result['success'] = false;
            }
        } else {
            $result['success'] = false;
        }
        echo CJSON::encode($result);
    }

    public function actionCerrarCajaDiaAnterior($inicio = null) {
        $result = array();
        if (!$inicio) {
            $inicio = date('Y-m-d 00:00:00', strtotime('-1 day'));
        }
        $fin = date('Y-m-d 00:00:00');
        $cierreCaja = CierreCaja::model()->de_empleado(Util::obtenerIdEmpleado())->find(array('condition' => 'fecha_cierre is null AND fecha_inicio between :inicio and :fin', 'params' => array(':inicio' => $inicio, ':fin' => $fin)));

        if ($cierreCaja) {
            $cierreCaja->fecha_cierre = $fin;
            $total = Pedido::model()->cierreCajaEmpleado($cierreCaja);

            $cierreCaja->total_ventas = doubleval($total);
            $cierreCaja->total = doubleval($total) + $cierreCaja->valor_apertura;
            if ($cierreCaja->save()) {
//        if ($cierreCaja)
                $result['success'] = true;
            } else {
                $result['success'] = false;
            }
        } else {
            $result['success'] = false;
        }
//        echo CJSON::encode($result);
    }
    
     public function actionBuscarPersona($cedula = NULL) {
        $persona = Persona::model()->findByAttributes(array('cedula'=>$cedula));
        
        echo CJSON::encode($persona);
    }

}
